# -*- coding: utf-8 -*-
# -------------------------------
# @软件：PyCharm
# @项目：news_spider
# @文件：tools.py
# @时间：2024/11/8 21:54
# @作者：卷心菜
# @邮箱：doki7456@qq.com
# -------------------------------

import shutil
import os
import config


def copy_file(src, dest):
    """
    复制文件从源路径到目标路径。

    参数:
    src (str): 源文件路径。
    dest (str): 目标文件路径（可以更改文件名和路径）。
    """
    try:
        shutil.copy2(src, dest)
        print(f"文件已成功从 {src} 复制到 {dest}")
    except Exception as e:
        print(f"复制文件时出错: {e}")


def compress_folder(folder_path, output_path, compression_format='zip'):
    """
    将文件夹压缩成指定的格式。

    参数:
    folder_path (str): 要压缩的文件夹路径。
    output_path (str): 压缩文件的输出路径和名称（不包括文件扩展名）。
    compression_format (str): 压缩格式（可以是 'zip', 'tar', 'gztar', 'bztar', 'xztar'），默认为 'zip'。
    """
    try:
        # 检查输出路径的目录是否存在，如果不存在则创建
        os.makedirs(os.path.dirname(output_path), exist_ok=True)

        # 创建压缩文件
        shutil.make_archive(output_path, compression_format, folder_path)

        # make_archive()会自动添加文件扩展名，除了zip格式
        compressed_file = f"{output_path}.{compression_format if compression_format != 'zip' else ''}"

        print(f"文件夹已成功从 {folder_path} 压缩到 {compressed_file}")
    except Exception as e:
        print(f"压缩文件夹时出错: {e}")


def all_mvfile():
    domain = str(config.domain)
    os.makedirs(os.path.dirname('data/' + domain), exist_ok=True)
    copy_file('page_links.jsonl', 'data/' + domain + '/page_links.jsonl')
    copy_file('searched_url.txt', 'data/' + domain + '/searched_url.txt')
    compress_folder('json/' + domain, 'data/' + domain + "/" + domain, 'zip')


if __name__ == '__main__':
    # 示例用法
    copy_file('path/to/source/file.txt', 'path/to/destination/copied_file.txt')
    compress_folder('path/to/folder_to_compress', 'path/to/output_archive', 'zip')
